<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>DNS服务器(三)：子域授权及转发 | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>DNS服务器(三)：子域授权及转发</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/DNS/">DNS</a>
			</span>
		
	</div>

	

	
		<h2 id="一、DNS服务器子域授权的实现"><a href="#一、DNS服务器子域授权的实现" class="headerlink" title="一、DNS服务器子域授权的实现"></a>一、DNS服务器子域授权的实现</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;通常自己架设DNS服务器给自己使用的公司都是内部有特殊需求，或者公司内部域名较多，为了方便以后的管理而架设。我们知道一个域名就是一个区域，一般每个区域都会有专人负责管理，当一个公司人员足够多时，这时就会有划分子域给下级部门管理的需求。在一个区域下划分子域，并给子域指定一个新的DNS服务器，这种方法是可以实现的，我们通常称这种划分子区域的方法为子域授权。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;实例：给wubinary.com域名划分一个blog.wubinary.com的子域。bind的安装配置及主DNS服务器的架设不再此讨论</p>
<ol>
<li>首先架设一个主DNS服务器，编辑/var/named/wubinary.com.zone文件，主DNS服务器的IP为192.168.0.6，资源记录数据文件如下：</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div></pre></td><td class="code"><pre><div class="line"><span class="variable">$TTL</span> 600</div><div class="line">@ IN SOA dns.wubinary.com. dnsadmin.wubinary.com. (</div><div class="line"> 2014031203</div><div class="line"> 2H</div><div class="line"> 4M</div><div class="line"> 1D</div><div class="line"> 2D )</div><div class="line">@ IN NS dns.wubinary.com.</div><div class="line">@ IN NS ns2.wubinary.com.</div><div class="line">@ IN MX 10 mail.wubinary.com.</div><div class="line">dns IN A 192.168.0.6</div><div class="line">mail IN A 192.168.0.12</div><div class="line">www IN A 192.168.0.48</div><div class="line">ns2 IN A 192.168.0.80</div><div class="line">blog.wubinary.com. IN NS dns.blog.wubinary.com.</div><div class="line">dns.blog.wubinary.com. IN A 192.168.0.2</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注意，以上最后两行为子域的DNS服务器，只要在主DNS服务器定义好了子域的DNS服务器就等于给子域授权了。</p>
<ol>
<li>然后在回到子域的服务器，192.168.0.2上配置子域区域。打开/etc/named.rfc1912.zones文件，在最末尾定义子域的区域。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">zone <span class="string">"blog.wubinary.com"</span> IN &#123;</div><div class="line"> <span class="built_in">type</span> master;</div><div class="line"> file <span class="string">"blog.wubinary.com.zone"</span>;</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
<ol>
<li>接着再定义子域DNS服务器的资源记录文件，/var/named/blog.wubinary.com.zone。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line"><span class="variable">$TTL</span> 600</div><div class="line">@ IN SOA dns.blog.wubinary.com. dnsadmin.blog.wubinary.com. (</div><div class="line"> 2014031201</div><div class="line"> 1H</div><div class="line"> 5M</div><div class="line"> 3D</div><div class="line"> 1D )</div><div class="line">@ IN NS dns.blog.wubinary.com.</div><div class="line">dns IN A 192.168.0.2</div><div class="line">www IN A 192.168.0.78</div><div class="line">ftp IN A 192.168.0.23</div></pre></td></tr></table></figure>
<ol>
<li>重新启动两边的DNS服务，测试一下子域授权是否成功。</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;主域机器测试：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/DNS%E6%9C%8D%E5%8A%A1%E5%99%A8(%E4%B8%89" alt=""></figure>%EF%BC%9A%E5%AD%90%E5%9F%9F%E6%8E%88%E6%9D%83%E5%8F%8A%E8%BD%AC%E5%8F%91/01.jpeg?raw=true)</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/DNS%E6%9C%8D%E5%8A%A1%E5%99%A8(%E4%B8%89" alt=""></figure>%EF%BC%9A%E5%AD%90%E5%9F%9F%E6%8E%88%E6%9D%83%E5%8F%8A%E8%BD%AC%E5%8F%91/02.jpeg?raw=true)</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;子域机器测试：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/DNS%E6%9C%8D%E5%8A%A1%E5%99%A8(%E4%B8%89" alt=""></figure>%EF%BC%9A%E5%AD%90%E5%9F%9F%E6%8E%88%E6%9D%83%E5%8F%8A%E8%BD%AC%E5%8F%91/03.jpeg?raw=true)</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;测试正常，操作成功！</p>
<h2 id="二、DNS服务器域名解析转发"><a href="#二、DNS服务器域名解析转发" class="headerlink" title="二、DNS服务器域名解析转发"></a>二、DNS服务器域名解析转发</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;DNS转发的意义在于，定向查询，一台DNS服务器在获取到查询请求时，自己不尝试解析域名，而转发查询请求给指定的DNS服务器实现此次解析操作。假设，我们现在碰到这么一种情况，我们的DNS服务器是处在一个内网的网段，与外网不能直接通信，在这个局域网中唯一一个能和外网通信的是路由器或者其它的DNS服务器。那么如果我们想要实现通过这台局域网的DNS服务器查询解析外网的域名，就要用到转发的功能了。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;转发可以用参数forwarders和forward实现：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">forwarders &#123; IP_ADDR1; IP_ADDR; ...&#125;;</div><div class="line">forward &#123; only|first &#125;;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;参数说明：</p>
<ul>
<li>forwarders：用于定义转发的服务器的IP地址，可以写多个，用分号隔开。</li>
<li>forward：用于定义转发的操作，only为只作转发操作，有结果则返回结果，没有结果则什么操作也不作；first为先作转发操作，如果没有结果则去递归查找。</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;全局和区域：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这两个参数可以放在全局定义，也可放在区域定义，也可以两个同时使用，但不管怎样，放在区域的优先权更高。如果用于特定区域则把转发定义在区域内，如果用于全局，则把转发定义在全局。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;转发实例：让上面的区域wubinary.com可以实现解析外网的域名。</p>
<ol>
<li>区域wubinary.com所设的DNS服务器为局域网的IP地址，不可以解析外网域名。</li>
</ol>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/DNS%E6%9C%8D%E5%8A%A1%E5%99%A8(%E4%B8%89" alt=""></figure>%EF%BC%9A%E5%AD%90%E5%9F%9F%E6%8E%88%E6%9D%83%E5%8F%8A%E8%BD%AC%E5%8F%91/04.jpeg?raw=true)</p>
<ol>
<li>由上图可以看出wubinary.com区域不能解析51cto.com的NS记录，我们添加一个转发功能。</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;编辑/etc/named.conf文件，添加转发ip 192.168.0.1</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/DNS%E6%9C%8D%E5%8A%A1%E5%99%A8(%E4%B8%89" alt=""></figure>%EF%BC%9A%E5%AD%90%E5%9F%9F%E6%8E%88%E6%9D%83%E5%8F%8A%E8%BD%AC%E5%8F%91/05.jpeg?raw=true)</p>
<ol>
<li>修改完成后，重启服务，测试一下，可以解析了，转发成功！</li>
</ol>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/DNS%E6%9C%8D%E5%8A%A1%E5%99%A8(%E4%B8%89" alt=""></figure>%EF%BC%9A%E5%AD%90%E5%9F%9F%E6%8E%88%E6%9D%83%E5%8F%8A%E8%BD%AC%E5%8F%91/06.jpeg?raw=true)</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;说明：有的时候，如果我们事先已经知道了某个区域DNS服务器的地址，为了不让当前DNS服务器向根查询结果，那么我们就可以直接使用转发，向当前DNS服务器指定一个地址，让它查询直接向这个地址请求，这样做的好处能明显的提高响应速度。</p>
<h2 id="三、DNS中的访问控制列表"><a href="#三、DNS中的访问控制列表" class="headerlink" title="三、DNS中的访问控制列表"></a>三、DNS中的访问控制列表</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有的时候我们须要在DNS配置文件中指定n个IP地址，如果全都写在一起的话，每块地方都要写一次，那么相当麻烦，如果使用一个参数定义那一片的IP地址，那么管理起来就相当方便了，这个就是DNS中的ACL,bind支持的访问控制表。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;格式：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line"> acl ACL_NAME &#123;</div><div class="line"> 172.16.0.0/16;</div><div class="line"> 192.168.0.0/24</div><div class="line"> 127.0.0.0/8;</div><div class="line"> ...</div><div class="line"> ...</div><div class="line">&#125;;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在全局选项中定义ACL，给每个ACL取一个名字，这样以后每次引用，只须在填定IP地址的地方填写那个变量就行了。在bind中有几个事先定义好的ACL:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">any: 任何主机</div><div class="line">none: 无一主机</div><div class="line"><span class="built_in">local</span>: 本机</div><div class="line">localnet: 本机的所在的网络</div></pre></td></tr></table></figure>

	

	
		<span class="different-posts"><a href="/2017/10/12/Dns、Iredmaill/9. DNS服务器(三)：子域授权及转发/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
